function getRandomInt(min,max){
    return min + Math.floor(Math.random() * (max - min +1))
}

function getCenter(obj){
    return{
        x:obj.x + obj.width/2,
        y:obj.y + obj.height/2
    }
}
//用于检测  某个值 某个属性  是否为undefinded
function isUndefined(val){
    return typeof val ==="undefined"
}
//碰撞检测函数，检测两个对象之间是否发生了碰撞
//obj和objB是两个对象  两个对象的数据   要能描述出一个矩形
//objA和objB一定要有四个属性 x,y,width,height
function isCollide(objA,objB){

if(isUndefined(objA.x) || isUndefined(objA.y) || isUndefined(objA.width) || isUndefined(objA.height) ||
 isUndefined(objB.x) || isUndefined(objB.y)  || isUndefined(objB.width)  ||isUndefined(objB.height)){
// 主动抛出错误，把对象的信息作为错误信息 打印出来
//JSON.stringify把对象中的内容 转化成字符串
    throw new Error('参数错误！' +'' +JSON.stringify(objA)+''+JSON.stringify(objB))
 }
//获得A和B的几何中心
    var canterA = getCenter(objA)
    var canterB = getCenter(objB)

    //2个矩形的几何中心点  在x,y轴上的距离，必须都小于  两个矩形的宽/高之和的1/2，这中情况下  两个就发生了碰撞
    return Math.abs(canterA.x-canterB.x)<(objA.width+objB.height)/2 &&
     Math.abs(canterA.y-canterB.y)<(objA.height+objB.height)/2

}

//用于检测  一个对象与一组对象之间是否发生了碰撞

//如果发生了碰撞 ，我们就返回那一组对象中 被撞到的对象
 function isCollideOneAndGroup(obj,group){
//第二种写法利用了find可以写的更加简洁
 return group.find(function(item){
     return isCollide(item,obj)
 })
}


function isCollideByGroup(groupA,groupB){
    var objA = undefined
    var objB = undefined
    for(var i = 0; i < groupA.length; i++){
        for(var j = 0;j< groupB.length;j++){
            if(isCollide(groupA[i],groupB[j]))  {
                objA = groupA[i]
                objB = groupB[j]
            }  
        }
    }
    return[objA,objB]
}